package com.ynet.middleground.user.dto;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.time.LocalDate;
import java.time.LocalDateTime;

/**
 * 用户基础信息
 */
@Data
@ApiModel(value = "用户基础信息", description = "用户基础信息")
public class UserBaseInfoHistoryDto implements Serializable {
    private static final long serialVersionUID = 541156470865024477L;
    /**
     * 用户id
     */
    @ApiModelProperty(value = "用户id", notes = "用户id")
    private Integer userId;

    /**
     * 用户类型,0-企业用户，1-港内员工用户，2-个人用户，3企业员工用户
     */
    @ApiModelProperty(value = "用户类型", notes = "用户类型")
    private String userType;

    /**
     * 账号
     */
    @ApiModelProperty(value = "账号", notes = "账号")
    private String userAccounts;

    /**
     * 联系电话
     */
    @ApiModelProperty(value = "联系电话", notes = "联系电话")
    private String telephone;

    /**
     * 用户名称
     */
    @ApiModelProperty(value = "用户名称", notes = "用户名称")
    private String userName;

    /**
     * 证件种类,00-统一社会信用代码,01-组织机构代码证,营业执照,税务登记证,04-身份证
     */
    @ApiModelProperty(value = "证件种类,00-统一社会信用代码,01-组织机构代码证,营业执照,税务登记证,04-身份证", notes = "证件种类,00-统一社会信用代码,01-组织机构代码证,营业执照,税务登记证,04-身份证")
    private String papersType;

    /**
     * 证件编号,当证件种类为00时该字段为统一社会信用代码,01时该字段为组织机构代码,04时为身份证
     */
    @ApiModelProperty(value = "证件编号,当证件种类为00时该字段为统一社会信用代码,01时该字段为组织机构代码,04时为身份证", notes = "证件编号,当证件种类为00时该字段为统一社会信用代码,01时该字段为组织机构代码,04时为身份证")
    private String papersNo;

    /**
     * 开户行行号
     */
    @ApiModelProperty(value = "开户行行号", notes = "开户行行号")
    private String openBankNo;

    /**
     * 经营地址(或者是家庭住址)
     */
    @ApiModelProperty(value = "经营地址", notes = "经营地址")
    private String userAddress;

    /**
     * 渠道,
     */
    @ApiModelProperty(value = "渠道", notes = "渠道")
    private String channel;

    /**
     * 邀请码(自己的)
     */
    @ApiModelProperty(value = "邀请码", notes = "邀请码")
    private String inviteCode;

    /**
     * 邀请人的邀请码
     */
    @ApiModelProperty(value = "邀请人的邀请码", notes = "邀请人的邀请码")
    private String enteredInviteCode;

    /**
     * 证件有效期起,当证件种类为00时该字段为统一社会信用代码有效期,01时该字段为组织机构代码有效期
     */
    @ApiModelProperty(value = "证件有效期起,当证件种类为00时该字段为统一社会信用代码有效期,01时该字段为组织机构代码有效期", notes = "证件有效期起,当证件种类为00时该字段为统一社会信用代码有效期,01时该字段为组织机构代码有效期")
    private LocalDate cerSdate;

    /**
     * 证件有效期止,当证件种类为00时该字段为统一社会信用代码有效期,01时该字段为组织机构代码有效期
     */
    @ApiModelProperty(value = "证件有效期止,当证件种类为00时该字段为统一社会信用代码有效期,01时该字段为组织机构代码有效期", notes = "证件有效期止,当证件种类为00时该字段为统一社会信用代码有效期,01时该字段为组织机构代码有效期")
    private LocalDate cerEdate;

    /**
     * 营业执照编号
     */
    @ApiModelProperty(value = "营业执照编号", notes = "营业执照编号", dataType = "String")
    private String bussinessLicenseNo;
    
    /**
     * 营业执照有效期起
     */
    @ApiModelProperty(value = "营业执照有效期起", notes = "营业执照有效期起", dataType = "java.time.LocalDate")
    private LocalDate bussinessLicenseNoSdate;

    /**
     * 营业执照有效期止
     */
    @ApiModelProperty(value = "营业执照有效期止", notes = "营业执照有效期止", dataType = "java.time.LocalDate")
    private LocalDate bussinessLicenseNoEdate;
    
    /**
     * 税务登记证编号
     */
    @ApiModelProperty(value = "税务登记证编号", notes = "税务登记证编号", dataType = "String")
    private String taxRegistrationNo;
    
    /**
     * 税务登记证有效期起
     */
    @ApiModelProperty(value = "税务登记证有效期起", notes = "税务登记证有效期起", dataType = "java.time.LocalDate")
    private LocalDate taxRegistrationNoSdate;

    /**
     * 税务登记证有效期止
     */
    @ApiModelProperty(value = "税务登记证有效期止", notes = "税务登记证有效期止", dataType = "java.time.LocalDate")
    private LocalDate taxRegistrationNoEdate;
    
    /**
     * 状态,0-用户注册成功
     */
    @ApiModelProperty(value = "状态", notes = "状态")
    private String state;

    /**
     * 用户锁定状态，存放的是一个集合,渠道集合
     */
    @ApiModelProperty(value = "用户锁定状态，存放的是一个集合", notes = "用户锁定状态，存放的是一个集合")
    private String channelUnlockState;

    /**
     * 邮箱
     */
    @ApiModelProperty(value = "邮箱", notes = "邮箱")
    private String email;

    /**
     * 客户经理编号
     */
    @ApiModelProperty(value = "客户经理编号", notes = "客户经理编号")
    private Integer customerManagerId;

    /**
     * 渠道授权,存放的是一个集合,渠道集合
     */
    @ApiModelProperty(value = "渠道授权", notes = "渠道授权")
    private String authorizedChannels;

    /**
     * 删除渠道用户,存放的是一个集合,渠道集合
     */
    @ApiModelProperty(value = "删除渠道用户", notes = "删除渠道用户")
    private String deleteChannelUsers;

    /**
     * 创建时间
     */
    @ApiModelProperty(value = "创建时间", notes = "创建时间")
    private LocalDateTime gmtCreate;

    /**
     * 创建人
     */
    @ApiModelProperty(value = "创建人", notes = "创建人")
    private Integer createBy;

    /**
     * 修改时间
     */
    @ApiModelProperty(value = "修改时间", notes = "修改时间")
    private LocalDateTime gmtModified;

    /**
     * 修改人
     */
    @ApiModelProperty(value = "修改人", notes = "修改人")
    private Integer modifiedBy;

    /**
     * 生成日期
     */
    @ApiModelProperty(value = "生成日期", notes = "生成日期")
    private LocalDateTime creationDate;
}
